﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.OrderDetailManagement
{
    public interface IOrderDetailManagementService
    {
        /// <summary>
        /// Add new orderDetail.
        /// </summary>
        /// <param name="orderDetail">OrderDetail to be added</param>
        void AddOrderDetail(OrderDetail orderDetail);

        /// <summary>
        /// Change existing orderDetail.
        /// </summary>
        /// <param name="orderDetail">Existing orderDetail to modify.</param>
        void ChangeOrderDetail(OrderDetail orderDetail);

        /// <summary>
        /// Find an orderDetail by its Id.
        /// </summary>
        /// <param name="orderDetailId">OrderDetailId</param>
        /// <returns>An orderDetail</returns>
        OrderDetail FindOrderDetailById(Guid orderDetailId);

        /// <summary>
        /// Find an orderDetail by order Id.
        /// </summary>
        /// <param name="orderId">Membership OrderId</param>
        /// <returns>An order detail</returns>
        List<OrderDetail> FindOrderDetailByOrderId(Guid orderId);

        /// <summary>
        /// Remove an existing orderDetail.
        /// </summary>
        /// <param name="orderDetail">The adress to be removed.</param>
        void RemoveOrderDetail(OrderDetail orderDetail);
    }
}
